girotondo.01.jpg
; Base del sistema logo tridimensionale

per virare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k11 (:l11 * :l + :l21 * :m)
as "k12 (:l12 * :l + :l22 * :m)
as "k13 (:l13 * :l + :l23 * :m)
as "k21 (:l21 * :l - :l11 * :m)
as "k22 (:l22 * :l - :l12 * :m)
as "k23 (:l23 * :l - :l13 * :m)
sostituire
fine

per beccheggiare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k11 (:l11 * :l - :l31 * :m)
as "k12 (:l12 * :l - :l32 * :m)
as "k13 (:l13 * :l - :l33 * :m)
as "k31 (:l31 * :l + :l11 * :m)
as "k32 (:l32 * :l + :l12 * :m)
as "k33 (:l33 * :l + :l13 * :m)
sostituire
fine

per rollare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k21 (:l21 * :l + :l31 * :m)
as "k22 (:l22 * :l + :l32 * :m)
as "k23 (:l23 * :l + :l33 * :m)
as "k31 (:l31 * :l - :l21 * :m)
as "k32 (:l32 * :l - :l22 * :m)
as "k33 (:l33 * :l - :l23 * :m)
sostituire
fine

per sostituire
muro
as "l11 :k11
as "l12 :k12
as "l13 :k13
as "l21 :k21
as "l22 :k22
as "l23 :k23
as "l31 :k31
as "l32 :k32
as "l33 :k33
fine

per camminare :e
as "x3d (:x3d + :e * :l11 * :scala3d)
as "y3d (:y3d + :e * :l12 * :scala3d)
as "z3d (:z3d + :e * :l13 * :scala3d)
disegnare :x3d :y3d :z3d
fine

per disegnare :u :v :w
vaipos (:f3d * :u / (:f3d - :w)) (:f3d * :v / (:f3d - :w))
fine

per vaipos :q :k
; se ambedue (:q < 0) (:q > -2e4) [as "q 0]
; se ambedue (:k < 0) (:k > -2e4) [as "k 0]
vaxy :q :k
fine

as "scala3d 2

per tridimensionale
nt
tana
ps
giu
as "f3d 360
as "k11 0
as "k12 1
as "k13 0
as "k21 -1
as "k22 0
as "k23 0
as "k31 0
as "k32 0
as "k33 1
as "x3d 0
as "y3d 0
as "z3d 0
sostituire
fine

per comandi.abbreviati
copiadef "tri "tridimensionale
copiadef "rol "rollare
copiadef "bec "beccheggiare
copiadef "vir "virare
copiadef "cam "camminare
fine

per terna
locale "stato
as "stato penna
terna.assi
aspenna :stato
fine

per niente.terna
terna
fine

per terna.assi
locale "axx
locale "p
giulapenna
spessore 1 viola1
as "p dove
as "dir dir
as "axx 50
puntino 10 :origine.colore
rosso1 giulapenna
disegnare (:x3d + :axx * :k11) (:y3d + :axx * :k12) (:z3d + :axx * :k13)
su vapos :p asdir :dir
verde1 giulapenna
disegnare (:x3d + :axx * :k21) (:y3d + :axx * :k22) (:z3d + :axx * :k23)
su vapos :p asdir :dir
giallo1 giulapenna
disegnare (:x3d + :axx * :k31) (:y3d + :axx * :k32) (:z3d + :axx * :k33)
su vapos :p asdir :dir
fine

per puntino :dim :colore
ascolriempi :colore
saltaxy meno prodotto :dim .5 meno prodotto :dim .5
blocco :dim :dim
saltaxy prodotto :dim .5 prodotto :dim .5
fine

per omino.dimensione :dimensione
as "omino.dimensione :dimensione
fine

per omino.colore :colore
as "omino.colore :colore
ascolpenna :omino.colore
fine

per omino.spessore :spessore
as "omino.spessore :spessore
spessore :omino.spessore
fine

per omino.forma :braccio :gamba
as "omino.corpo :omino.dimensione
as "braccio.corpo prodotto :omino.dimensione :braccio
as "gamba.corpo prodotto :omino.dimensione :gamba
fine

per omino.braccio.destro
virare :braccio.destro
camminare :braccio.corpo
puntino 10 :rosso1
camminare meno :braccio.corpo
virare meno :braccio.destro
fine

per omino.braccio.sinistro
virare meno :braccio.sinistro
camminare :braccio.corpo
puntino 10 :verde1
camminare meno :braccio.corpo
virare :braccio.sinistro
fine

per omino.gamba.destra
virare :gamba.destra
camminare :gamba.corpo
camminare meno :gamba.corpo
virare meno :gamba.destra
fine

per omino.gamba.sinistra
virare meno :gamba.sinistra
camminare :gamba.corpo
camminare meno :gamba.corpo
virare :gamba.sinistra
fine

per omino.corpo
camminare :omino.corpo
fine

per omino.testa
virare -90
ripeti 36 [camminare 15 virare 10]
virare 90
fine

per omino.articola :braccio.destro :braccio.sinistro :gamba.destra :gamba.sinistra
giulapenna
omino.corpo
omino.testa
omino.braccio.destro
omino.braccio.sinistro
camminare meno :omino.corpo
omino.gamba.destra
omino.gamba.sinistra
fine

per omino :dim :col :spess :prop1 :prop2 :bd :bs :gd :gs
omino.dimensione :dim
omino.colore :col
omino.spessore :spess
omino.forma :prop1 :prop2
omino.articola :bd :bs :gd :gs
fine

per allontanati :zoom
sulapenna
beccheggiare 90
camminare :zoom
beccheggiare -90
fine

per avvicinati :zoom
sulapenna
beccheggiare 90
camminare meno :zoom
beccheggiare -90
fine

per a.sinistra :tot
sulapenna
virare 90
camminare :tot
virare -90
fine

per in.alto :tot
sulapenna
camminare :tot
fine

per in.basso :tot
sulapenna
camminare meno :tot
fine

per a.destra :tot
sulapenna
virare -90
camminare :tot
virare 90
fine

per girogirotondo1
girospesso girocolo
omino 300 :colo :spesso .9 1 120 120 160 160
fine

per girocolo
se :giro = 1 [as "colo [50 50 50]]
se :giro = 2 [as "colo [70 70 70]]
se :giro = 3 [as "colo [90 90 90]]
se :giro = 4 [as "colo [110 110 110]]
se :giro = 5 [as "colo [130 130 130]]
se :giro = 6 [as "colo [150 150 150]]
se :giro = 7 [as "colo :rosso1]
se :giro = 8 [as "colo :verde1]
se :giro = 9 [as "colo :giallo1]
se :giro = 10 [as "colo :rosso3]
se :giro = 11 [as "colo :verde3]
se :giro = 12 [as "colo :giallo3]
fine

per girospesso
se :giro = 1 [as "spesso 6]
se :giro = 2 [as "spesso 5]
se :giro = 3 [as "spesso 4]
se :giro = 4 [as "spesso 3]
se :giro = 5 [as "spesso 2]
se :giro = 6 [as "spesso 1]
se :giro = 7 [as "spesso 1]
se :giro = 8 [as "spesso 2]
se :giro = 9 [as "spesso 3]
se :giro = 10 [as "spesso 4]
se :giro = 11 [as "spesso 5]
se :giro = 12 [as "spesso 6]
se :giro = 13 [as "spesso 6]
fine

per girogirotondo2
girogirotondo1
rollare -30 a.sinistra 350
allontanati 150
fine

per girotondo
in.basso 200
a.sinistra 300
allontanati 1500
beccheggiare -50
ripeti 13 [as "giro rip girogirotondo2 aspetta 1000]
fine

tarta.apparecchia
sfondogrigio7
as "scala3d 1
as "origine.colore :giallo1
tridimensionale
comandi.abbreviati
girotondo
sfondo.conserva.come "girotondo.01